package com.example.utils;

import com.alibaba.fastjson.JSON;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

/**
 * 根据经纬度地理反编码生成具体地址信息
 *
 * @author ding
 * @since 2024/6/27
 */
public class AddressUtils {

    public static String getAddressByHttp(Object lng, Object lat) {
        String location = lng + "," + lat;
        String url = "https://restapi.amap.com/v3/geocode/regeo?output=json&location="+location+"&key=5562ac0ac15f333e7d377011603b4aa9&extensions=base" ;
//        System.out.println(url);
        String res = doGet(url);
//        System.out.println(JSON.parse(res));
        return JSON.parseObject(res).getJSONObject("regeocode").getString("formatted_address");
    }
    public static String doGet(String url) {
        //创建一个Http客户端
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        //创建一个get请求
        HttpGet httpGet = new HttpGet(url);
        //响应模型
        CloseableHttpResponse response = null;
        try {
            //由客户端发送get请求
            response = httpClient.execute(httpGet);
            //从响应模型中获取响应实体
            HttpEntity responseEntity = response.getEntity();
            if (responseEntity != null) {
                return EntityUtils.toString(responseEntity);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (httpClient != null) {
                    httpClient.close();
                }
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return null;
    }
}
